bat 将指令执行结果赋给变量 您所在的位置:网站首页 linux 把命令的返回值赋给变量 bat 将指令执行结果赋给变量

bat 将指令执行结果赋给变量

2023-09-29 00:56| 来源: 网络整理| 查看: 265

linux shell脚本将指令执行结果赋值给变量很容易,比如:

#!/bin/bash file_name=`ls | wc -l` echo ${file_name} file_list=`ls -l | awk '{print $1, $NF}'` echo ${file_list}

很容易将指令执行结果赋值给变量,然后通过变量在进行处理。

但是在批处理中,这种方法就不能使用了。如果需要把一个命令的处理结果赋值给一个变量,可以使用如下方法:

for /f "delims=" %%t in ('命令字符串') do set str=%%t echo %str%

当命令字符串中含有%时,需要转义。使用imagemagick中的identify命令获取图片的宽和高:

identify -format %wx%h demo.jpg

直接在命令行中使用上述命令可以看到输出了图片的高和宽,但是用它放在批处理脚本中来获取命令的输出结果,则失败,原因是命令字符串中含有%符号,它在批处理有特殊含义,所有需要转义,转义的方法是使用两个%%,正确的做法是:

for /f "delims=" %%t in ('identify -format %%wx%%h demo.jpg') set str=%%t

还有一个需要注意的地方,如果中间有管道,需要使用转义符  ^

例如:判断文件个数,细细体会

这个例子是在Windows环境下,映射了linux的磁盘,从Windows目录向linux指定目录拷贝文件。

::前面的省略 Z: cd \mnt\external\workspace\%project%_CP_IMG\ for /f "tokens=*" %%i in ('dir /b ^|find /v /c "SC00*" ') do set files_num=%%i if %files_num%==4 ( @echo ON echo cpoy_file successed exit 0 ) else ( @echo ON echo copy_file failed exit 1 ) ::后面的省略

有读者可能会问,为什么不用%errorlevel%来判断,因为在使用的过程中出现过 %errorlevel% 返回值正确,但是没有拷贝到linux指定目录里面,所以不得已必须使用判断文件个数!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有